#include <stdio.h>
#define NUM 8
int a[NUM + 1];
int main()
{
    int number, i, k, flag, not_finish = 1, count = 0;
    i = 1;
    a[1] = 1;
    printf("The possible configuration of 8 queens are:\n");
    while (not_finish)
    {
        while (not_finish && i <= NUM)
        {
            for (flag = 1, k = 1; flag && k < i; k++)
                if (a[k] == a[i])
                    flag = 0;
            for (k = 1; flag && k < i; k++)
                if ((a[i] = [k] - (k - i)) || (a[i] == a[k] + (k - i)))
                    flag = 0;
            if (!flag)
            {
                if (a[i] == a[i - 1])
                {
                    i--;
                    if (i > 1 && a[i] == NUM)
                        a[i] = 1;
                    else if (i == 1 && a[i] == NUM)
                        not_finish = 0;
                    else
                        a[i]++;
                }
                else if (a[i] == NUM)
                    a[i] = 1;
                else
                    a[i]++;
            }
            else if (++i <= NUM)
                if (a[i - 1] == NUM)
                    a[i] = 1;
                else
                    a[i] = a[i - 1] + 1;
        }
        if (not_finish)
        {
            ++count;
            printf((count - 1) % 3 ? "[%2d]:" : "\n[%2d]:", count);
            for (k = 1; k <= NUM; k++)
                printf(" %d", a[k]);
            if (a[NUM - 1] < NUM)
                a[NUM - 1]++;
            else
                a[NUM - 1] = 1;
            i = NUM - 1;
        }
    }
}
